package com.portal.facade.impl;

import java.io.ByteArrayOutputStream;
import java.util.Calendar;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import com.portal.builder.RelatorioProdutividadeBuilder;
import com.portal.dao.RelatorioProdutividadeDAO;
import com.portal.facade.RelatorioProdutividadeFacade;

@Stateless
public class RelatorioProdutividadeFacadeImpl implements RelatorioProdutividadeFacade {

	@EJB
	private RelatorioProdutividadeDAO relatoriosDAO;

	@Override
	public ByteArrayOutputStream gerarRelatorio(Calendar dataInicial, Calendar dataFinal) {
		prepararDataInicial(dataInicial);
		prepararDataFinal(dataFinal);
		List<Object[]> dadosDasLinhas = relatoriosDAO.generateRelatorioProdutividade(dataInicial, dataFinal);
		RelatorioProdutividadeBuilder relatorioBuilder = new RelatorioProdutividadeBuilder(dadosDasLinhas);
		
		return relatorioBuilder.build();
	}

	private void prepararDataInicial(Calendar dataInicial){
		dataInicial.set(Calendar.HOUR_OF_DAY, 0);
		dataInicial.set(Calendar.MINUTE, 0);
		dataInicial.set(Calendar.SECOND, 0);
		dataInicial.set(Calendar.MILLISECOND, 0);
	}

	private void prepararDataFinal(Calendar dataFinal){
		dataFinal.set(Calendar.HOUR_OF_DAY, 23);
		dataFinal.set(Calendar.MINUTE, 59);
		dataFinal.set(Calendar.SECOND, 59);
		dataFinal.set(Calendar.MILLISECOND, 999);
	}
}
